--[[
中心找节点函数
功能：查找指定节点并可选择性地点击节点中心
参数：
  nodeArr - 节点信息数组或节点名称
  isClick - 布尔值，是否点击找到的节点
返回值：
  布尔值，表示是否找到节点
--]]

local 点击坐标 = require("basic_operations.点击坐标")

function 中心找节点(nodeArr, isClick)
    -- 检查nodeArr是否为nil或者不是表
    if nodeArr == nil or type(nodeArr) ~= "table" then
        print("错误: 节点信息为空或格式不正确")
        return false
    end
    
    -- 检查是否需要分辨率适配
    local 使用适配节点 = false
    local 原始节点名 = nil
    
    -- 如果是使用节点名而非直接节点信息，尝试进行分辨率适配
    if node_config and node_config.获取适配节点 and type(nodeArr) == "string" then
        原始节点名 = nodeArr
        nodeArr = node_config.获取适配节点(nodeArr)
        使用适配节点 = true
        
        -- 检查是否有分辨率特定调整
        if node_config.当前分辨率 and node_config.分辨率特定调整 and 
           node_config.分辨率特定调整[node_config.当前分辨率.宽度] and
           node_config.分辨率特定调整[node_config.当前分辨率.宽度][原始节点名] then
            -- 使用分辨率特定的节点定义
            nodeArr = node_config.分辨率特定调整[node_config.当前分辨率.宽度][原始节点名]
            print("使用" .. node_config.当前分辨率.宽度 .. "分辨率特定的节点定义: " .. 原始节点名)
        end
    end
    
    -- 检查nodeArr[5]是否存在
    if nodeArr[5] == nil then
        print("错误: 节点信息不完整，缺少第5个元素")
        return false
    end
    
    -- 输出节点信息以帮助调试
    print("尝试查找节点: " .. tostring(nodeArr[5].className or nodeArr[5].class) .. 
          ", ID: " .. tostring(nodeArr[5].id))
    
    local ret = nil
    -- 使用pcall包装可能出错的调用
    local success, result = pcall(function()
        -- 尝试方法1：使用五个参数
        local node = nodeLib.findOne(nodeArr[1], nodeArr[2], nodeArr[3], nodeArr[4], nodeArr[5])
        if node then return node end
        
        -- 如果失败，尝试方法2：直接传递第5个元素
        return nodeLib.findOne(nodeArr[5])
    end)
    
    if not success then
        print("查找节点时出错: " .. tostring(result))
        return false
    end
    
    ret = result
    
    if ret ~= nil then
        -- 添加更详细的打印信息
        print("找到节点！位置：")
        print("左："..ret.bounds.l.." 上："..ret.bounds.t)
        print("右："..ret.bounds.r.." 下："..ret.bounds.b)
        if isClick == true then
            local center_x = (ret.bounds.l + ret.bounds.r)/2
            local center_y = (ret.bounds.t + ret.bounds.b)/2
            print("点击位置：x="..center_x..", y="..center_y)
            点击坐标(center_x, center_y, 1000)
            sleep(1000)
        end
        return true
    end
    print("未找到节点")
    return false
end

return 中心找节点 